import path from "path";
import { defineConfig, loadEnv } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
import AutoImport from "unplugin-auto-import/vite"; // 自动化导入 api
import Components from "unplugin-vue-components/vite";

// https://vitejs.dev/config/
export default defineConfig(({ mode }: any): any => {
  //  解决 vite.config.ts中无法使用import.meta.env 的情况
  const VITE_APP_PROXY_URL: string = loadEnv(
    mode,
    process.cwd()
  ).VITE_APP_PROXY_URL;

  return {
    plugins: [
      AutoImport({
        include: [
          /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
          /\.vue$/,
          /\.vue\?vue/, // .vue
        ],
        imports: ["vue", "uni-app", "pinia"],
        dts: "typings/auto-imports.d.ts",
      }),
      Components({
        // dirs 指定组件所在位置，默认为 src/components
        // 可以让我们使用自己定义组件的时候免去 import 的麻烦
        dirs: ["src/components"],
        // 配置需要将哪些后缀类型的文件进行自动按需引入，'vue'为默认值
        // extensions: ['vue'],
        dts: "typings/components.d.ts",
        // // 遍历子目录
        // deep: true,
      }),
      uni(),
    ],
    alias: {
      "@": path.resolve(__dirname, "./src"), // 配置 @ 指向 src 目录
      extensions: [".js", ".ts", ".json", ".vue"],
    },
    server: {
      proxy: {
        "/dev": {
          target: VITE_APP_PROXY_URL,
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/dev/, ""),
        },
      },
    },
  };
});
